home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 49
/
Amiga Format CD49 (2000-01-17)(Future Publishing)(GB)(Track 1 of 3)[!][issue 2000-02].iso
/
-serious-
/
misc
/
pdflib
/
bind
/
c
/
pdfclock.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-12-06
|
4KB
|
132 lines
/*---------------------------------------------------------------------------*
| PDFlib - A library for dynamically generating PDF files |
+---------------------------------------------------------------------------+
| Copyright (c) 1997-1999 Thomas Merz. All rights reserved. |
+---------------------------------------------------------------------------+
| This software is not in the public domain. It is subject to the |
| "Aladdin Free Public License". See the file license.txt for details. |
| This license grants you the right to use and redistribute PDFlib |
| under certain conditions. Among other things, the license requires |
| that the copyright notice and this notice be preserved on all copies. |
| This requirement extends to ports to other programming languages. |
| |
| In short, you are allowed to develop and use PDFlib-based software |
| as long as you don't sell it. Commercial use of PDFlib requires a |
| commercial license which can be obtained from the author of PDFlib. |
| Contact information can be found in the accompanying PDFlib manual. |
| PDFlib is distributed with no warranty of any kind. Commercial users, |
| however, will receive warranty and support statements in writing. |
*---------------------------------------------------------------------------*/
/* pdfclock.c
*
* A little PDFlib application to draw an analog clock.
*
*/
#include <stdio.h>
#include <time.h>
#include "pdflib.h"
#define RADIUS 200.0
#define MARGIN 20.0
int
main(int argc, char *argv[])
{
PDF *p;
float alpha;
time_t timer;
struct tm ltime;
p = PDF_new();
if (PDF_open_file(p, "pdfclock_c.pdf") == -1) {
fprintf(stderr, "Error: cannot open PDF file pdfclock_c.pdf.\n");
exit(2);
}
PDF_set_info(p, "Creator", "pdfclock.c");
PDF_set_info(p, "Author", "Thomas Merz");
PDF_set_info(p, "Title", "PDF clock (C)");
PDF_begin_page(p, (unsigned int) (2 * (RADIUS + MARGIN)),
(unsigned int) (2 * (RADIUS + MARGIN)));
PDF_translate(p, RADIUS + MARGIN, RADIUS + MARGIN);
PDF_setrgbcolor(p, 0.0, 0.0, 1.0);
PDF_save(p);
/* minute strokes */
PDF_setlinewidth(p, 2.0);
for (alpha = 0; alpha < 360; alpha += 6)
{
PDF_rotate(p, 6.0);
PDF_moveto(p, RADIUS, 0.0);
PDF_lineto(p, (float) (RADIUS-MARGIN/3), 0.0);
PDF_stroke(p);
}
PDF_restore(p);
PDF_save(p);
/* 5 minute strokes */
PDF_setlinewidth(p, 3.0);
for (alpha = 0; alpha < 360; alpha += 30)
{
PDF_rotate(p, 30.0);
PDF_moveto(p, RADIUS, 0.0);
PDF_lineto(p, RADIUS-MARGIN, 0.0);
PDF_stroke(p);
}
time(&timer);
ltime = *localtime(&timer);
/* draw hour hand */
PDF_save(p);
PDF_rotate(p,
(float)(-((ltime.tm_min/60.0) + ltime.tm_hour - 3.0) * 30.0));
PDF_moveto(p, -RADIUS/10, -RADIUS/20);
PDF_lineto(p, RADIUS/2, 0.0);
PDF_lineto(p, -RADIUS/10, RADIUS/20);
PDF_closepath(p);
PDF_fill(p);
PDF_restore(p);
/* draw minute hand */
PDF_save(p);
PDF_rotate(p,
(float) (-((ltime.tm_sec/60.0) + ltime.tm_min - 15.0) * 6.0));
PDF_moveto(p, -RADIUS/10, -RADIUS/20);
PDF_lineto(p, RADIUS * 0.8, 0.0);
PDF_lineto(p, -RADIUS/10, RADIUS/20);
PDF_closepath(p);
PDF_fill(p);
PDF_restore(p);
/* draw second hand */
PDF_setrgbcolor(p, 1.0, 0.0, 0.0);
PDF_setlinewidth(p, 2);
PDF_save(p);
PDF_rotate(p, (float) -((ltime.tm_sec - 15.0) * 6.0));
PDF_moveto(p, -RADIUS/5, 0.0);
PDF_lineto(p, RADIUS, 0.0);
PDF_stroke(p);
PDF_restore(p);
/* draw little circle at center */
PDF_circle(p, 0, 0, (float) RADIUS/30);
PDF_fill(p);
PDF_restore(p);
PDF_end_page(p);
PDF_close(p);
PDF_delete(p);
exit(0);
}